﻿using System;
using System.Collections.Generic;
using System.Text;
using Sinacor.UI.Bovespa.Corretagem.Communication.Bovespa.Corretagem.FormadorMercado;
using Sinacor.Infra.UI.Common;

namespace Sinacor.UI.Bovespa.Corretagem.Communication.Translator.DataContractToModel
{
    public class FormadorMercado
    {

        public Sinacor.UI.Bovespa.Corretagem.Model.FormadorMercado ToFormadorMercado(FormadorMercadoResponse request)
        {

            Sinacor.UI.Bovespa.Corretagem.Model.FormadorMercado result = null;
            if (request == null)
                return null;
            else
            {

                result = new Sinacor.UI.Bovespa.Corretagem.Model.FormadorMercado();
                result.ApelidoCliente = request.ApelidoCliente;
                result.Ativo = request.Ativo;
                result.CodigoCliente = request.CodigoCliente;
                result.DataFinal = request.DataFinal;
                result.DataInicial = request.DataInicial;
                result.PercentualDesconto = request.PercentualDesconto;
                result.Isin = request.Isin;
                switch (request.TipoMercado.Value)
                {
                    case TipoMercado.Vista:
                        result.TipoMercado = Sinacor.UI.Bovespa.Corretagem.Model.Enum.TipoMercado.Vista; break;
                    case TipoMercado.OpcaoCompra:
                        result.TipoMercado = Sinacor.UI.Bovespa.Corretagem.Model.Enum.TipoMercado.OpcaoCompra; break;
                    case TipoMercado.OpcaoVenda:
                        result.TipoMercado = Sinacor.UI.Bovespa.Corretagem.Model.Enum.TipoMercado.OpcaoVenda; break;
                    case TipoMercado.ExercicioOpcaoCompra:
                        result.TipoMercado = Sinacor.UI.Bovespa.Corretagem.Model.Enum.TipoMercado.ExercicioOpcaoCompra; break;
                    case TipoMercado.ExercicioOpcaoVenda:
                        result.TipoMercado = Sinacor.UI.Bovespa.Corretagem.Model.Enum.TipoMercado.ExercicioOpcaoVenda; break;
                    case TipoMercado.Fracionario:
                        result.TipoMercado = Sinacor.UI.Bovespa.Corretagem.Model.Enum.TipoMercado.Fracionario; break;
                    case TipoMercado.Estruturado:
                        result.TipoMercado = Sinacor.UI.Bovespa.Corretagem.Model.Enum.TipoMercado.Estruturado; break;
                    case TipoMercado.Leilao:
                        result.TipoMercado = Sinacor.UI.Bovespa.Corretagem.Model.Enum.TipoMercado.Leilao; break;
                    case TipoMercado.Termo:
                        result.TipoMercado = Sinacor.UI.Bovespa.Corretagem.Model.Enum.TipoMercado.Termo; break;
                    case TipoMercado.LeilaoNaoCotados:
                        result.TipoMercado = Sinacor.UI.Bovespa.Corretagem.Model.Enum.TipoMercado.LeilaoNaoCotados; break;
                    case TipoMercado.Futuro:
                        result.TipoMercado = Sinacor.UI.Bovespa.Corretagem.Model.Enum.TipoMercado.Futuro; break;
                    case TipoMercado.VencimentoFuturo:
                        result.TipoMercado = Sinacor.UI.Bovespa.Corretagem.Model.Enum.TipoMercado.VencimentoFuturo; break;
                    case TipoMercado.BOX:
                        result.TipoMercado = Sinacor.UI.Bovespa.Corretagem.Model.Enum.TipoMercado.BOX; break;
                    default:
                        break;
                }
                
            }
            return result;
        }

        public ModelCollection<Sinacor.UI.Bovespa.Corretagem.Model.FormadorMercado> ToFormadorMercado(List<FormadorMercadoResponse> requestList)
        {
            ModelCollection<Sinacor.UI.Bovespa.Corretagem.Model.FormadorMercado> resultList = null;
            if (requestList != null)
            {
                resultList = new ModelCollection<Sinacor.UI.Bovespa.Corretagem.Model.FormadorMercado>();
                foreach (FormadorMercadoResponse entity in requestList)
                {
                    resultList.Add(ToFormadorMercado(entity));
                }
            }
            return resultList;
        }
    }
}